2012年12月20日木曜日

その3

openstackのその3

ノードを追加する

localrcは

HOST_IP=192.168.11.6
ADMIN_PASSWORD=openstack
MYSQL_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=admintoken-2012
ENABLED_SERVICES=n-cpu,rabbit,g-api,quantum,q-agt
ENABLE_TENANT_TUNNELS=True
SERVICE_HOST=192.168.11.5
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
Q_HOST=$SERVICE_HOST
IPとパスは臨機応変に




インスタンスを作成

インストールでけた。

参考URL

http://networkstatic.net/openstack-folsom-quantum-devstack-installation-tutorial/


wget https://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
glance add name=Ubuntu-12.04 is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img

をやって、イメージを登録するお

その後、Horizonにアクセスし
セキュリティグループを編集(defaultがあるのでそいつを)
tcp 22 22
icmp -1 -1

sshとpingを通せるようにポートを開放してるのかな

で、インスタンスを作成。登録したイメージで作成しましょう。

キーペアを作ってダウンロード。openstackのコントローラが入ってるOSに入れておきましょう。
そして、そのサーバから
ssh -i ubuntu@
で、アクセスできるはずだけど、できないかも、、、

とりあえず、フローティングipなるものを作成しないといけないらしい。
フローティングipとは、外部にアクセスするために必要なもの。

自分がわかる程度に適当に書きます。
GUIでフローティングipを割り当てる。その後

source openrc admin admin
nova list
quantum port-list -- --device_id
quantum floatingip-list
quantum floatingip-associate

これでイケる

source openrc admin admin

にしてるけど、なぜかテナントをdemoの方で上記のものを作成しないとつながらないT_T

理由がわからない。

とりあえず、sshでインスタンスにアクセスできました。
次は、ライブマイグレーションを目指す。




devstackを用いてOpenStackを導入してからライブマイグレーションを行いたい その1

devstackを用いてOpenStackを導入してからライブマイグレーションを行いたいと考えています。

OpenStackについて理解できていないところは数多く。自分のミスなのかバグなのかもわかりません。しかし、頑張ります。なぜなら、これができないと卒業できないから!!

マイグレーションを行うまでの道程を書いて行きます。

まず、devstackを用いてOpenStackをインストールします。
自分で導入するにはハードルが高すぎます。

参考URLは
https://github.com/irixjp/openstack-study-9/wiki/%E4%BA%8B%E5%89%8D%E6%BA%96%E5%82%99

コントローラーのlocalrcは

HOST_IP=192.168.13.2

ADMIN_PASSWORD=stacktera
MYSQL_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=admintoken

disable_service n-net
disable_service n-obj
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3

ENABLE_TENANT_TUNNELS=True

FIXED_RANGE=192.168.4.0/24
NETWORK_GATEWAY=192.168.4.254
FLOATING_RANGE=192.168.13.128/25
MULTI_HOST=True

SYSLOG=True

LOGFILE=/opt/stack/logs/stack.sh.log

FLAT_INTERFACE=eth0
FIXED_NETWORK_SIZE=256
PUBLIC_INTERFACE=eth0

#OFFLINE=True
NOVA_BRANCH=stable/folsom
GLANCE_BRANCH=stable/folsom
KEYSTONE_BRANCH=stable/folsom
HORIZON_BRANCH=stable/folsom
CINDER_BRANCH=stable/folsom
QUANTUM_BRANCH=stable/folsom

ノード側のlocalrcは


HOST_IP=192.168.0.112

ADMIN_PASSWORD=openstack
MYSQL_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=admintoken-2012
FLAT_INTERFACE=eth0
FIXED_RANGE=192.168.4.0/24
FIXED_NETWORK_SIZE=256
FLOATING_RANGE=192.168.13.128/25
MULTI_HOST=1
LOGFILE=/opt/stack/logs/stack.sh.log

ENABLED_SERVICES=n-cpu,rabbit,g-api,quantum,q-agt
ENABLE_TENANT_TUNNELS=True

SERVICE_HOST=192.168.0.112
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
Q_HOST=$SERVICE_HOST


導入できました。




$ nova-manage service list
Binary           Host                                 Zone             Status     State Updated_At
nova-compute     node01                              nova             enabled    :-)   2012-12-27 14:15:09
nova-cert        controller                              nova             enabled    :-)   2012-12-28 05:47:31
nova-compute     controller                              nova             enabled    :-)   2012-12-27 14:14:22
nova-scheduler   controller                              nova             enabled    :-)   2012-12-28 05:47:31
nova-consoleauth controller                              nova             enabled    :-)   2012-12-28 05:47:30










2012年11月7日水曜日

データ保存 その2

つづき ちょこちょこと訂正を加えた。とりあえずUISegmentedControll(_timeSegmanet)を加えた。

- (void)save{
    
    NSMutableArray *myMuArray = [NSMutableArray array];
    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
    
    // 保存されているデータがあるかないか判断
    if ([[[NSUserDefaults standardUserDefaults] arrayForKey:@"ARRAY"] count] > 0) {  // あれば呼び込む
        NSArray *array = [[NSUserDefaults standardUserDefaults] arrayForKey:@"ARRAY"];
        myMuArray = [[NSMutableArray alloc] initWithArray:array];
        NSLog(@"myMuArray is %@",[myMuArray description]);
    }
    
    //日時の書式を作成
    NSDate *nowDate = [NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy/MM/dd "];
    
    //日付型をString型にする
    NSString *dateString = [formatter stringFromDate:nowDate];

    if (_timeSegment.selectedSegmentIndex == 0) {
        [dict setValue:@"ASA" forKey:@"TIME"];

    }else if(_timeSegment.selectedSegmentIndex == 1){
        [dict setValue:@"HIRU" forKey:@"TIME"];
        
    }else if(_timeSegment.selectedSegmentIndex == 2){
        [dict setValue:@"YORU" forKey:@"TIME"];
    }
    [dict setValue:dateString forKey:@"DATE"];

    [dict setValue:hozontfd.text forKey:@"HINMOKU"];
    
    // 新しい値を配列に追加
    [myMuArray addObject:dict];
    // 値を保存
    [[NSUserDefaults standardUserDefaults] setObject:myMuArray forKey:@"ARRAY"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
myMuArrayの出力結果は、
myMuArray is (
         {
        DATE = "2012/11/07 ";
        HINMOKU = 77;
        TIME = ASA;
    },
        {
        DATE = "2012/11/07 ";
        HINMOKU = 7;
        TIME = ASA;
    },
        {
        DATE = "2012/11/07 ";
        HINMOKU = 733;
        TIME = YORU;
    }
)
出力結果の「\U5e」なんだ?と思ったら「年[スペース]」か。これはスラッシュでいいなぁと思い修正。 出力結果の構造的に理想とは違うのかな?

2012年11月6日火曜日

データ保存について

NSDictionaryとNSUserDefaultを使用してデータを保存します。

 目標

①日付、②品目数(朝or昼or夜)をセルのカスタマイズを使って表示させることです。
1、dictionary、NSUserDefaultsを使って
①日付
②品目数
③品目数
④品目数
を格納、保存
です。 現在の状況は、とりあえずコードベタ張りするとこんな感じ。
//seguの処理
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // 遷移先を取得
    if ([[segue identifier] isEqualToString:@"ponSegue"]) {
        
        TableViewController *tableViewController = segue.destinationViewController;
        
        //追加 日時の表記を変える
        //日時の書式を作成
        nowDate = [NSDate date];
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"yyyy年 MM/dd "];  //HH:mm
        //日付型をString型にする
        NSString *dateString = [formatter stringFromDate:nowDate];
        
        // NSMutableArrayの生成
        NSMutableArray* myMuArray = [NSMutableArray array];
        //日付を入れる配列用意
        NSMutableArray* myDateString = [NSMutableArray array];
        
        
        // 保存されているデータがあるかないか判断
        if ([[[NSUserDefaults standardUserDefaults]
              arrayForKey:@"ARRAY"] count] > 0) {  // あれば呼び込む
            
            //NSarrayで取り出す (これじゃないとNSUserDefaultsから取り出せない)
            NSArray *array = [[NSUserDefaults standardUserDefaults]
                              arrayForKey:@"ARRAY"];
            
            //NSMutableArrayに格納
            myMuArray = [[NSMutableArray alloc] initWithArray:array];
            NSLog(@"myMuArray is %@",[myMuArray description]);
        }
        
        // 新しい値を配列に追加
        [myDateString addObject:dateString];
        [myMuArray addObject:hozontfd.text];
        
        //大きな配列全体の保存
        saveArray = [[NSMutableArray alloc] initWithCapacity:1];
        
        //dictionaryにそれぞれの要素を入れる
        NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:1];
        
        [dict setObject:myDateString forKey:@"Date"];
        [dict setObject:myMuArray forKey:@"MuArray"];
        //これでまとめて保存
        [saveArray addObject:dict];
        // 値を保存
        [[NSUserDefaults standardUserDefaults] setObject:saveArray forKey:@"ARRAY"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        
        tableViewController.myMuArray2 =saveArray;
        tableViewController.hinmoku = myMuArray;
        tableViewController.hiduke = myDateString;
        
    }
    
}

ふむ、、、おかしいですねー。 出力結果が、(朝1日分のみですが^^;;)
        {
        Date =         (
            "2012\U5e74 11/06 "
        );
        MuArray =         (
            12
        );
    }
)
思うようなデータが入ってないっすねー。 理想は、
{
Date = "日付"
 Asa = "数字"
 Hiru = "数字"
 Yoru = "数字"
},{
Date = "日付"
 Asa = "数字"
 Hiru = "数字"
 Yoru = "数字"
}

ですかねー。違うかもしれんけど^^;; 長くなったので次回

nested push animation can result in corrupted navigation bar


nested push animation can result in corrupted navigation bar

Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.

Unbalanced calls to begin/end appearance transitions for .

このエラーに引っかかった。 まぁそのままんまですが、解決するまですごく時間かかった。 こいつとかみたらいんですかねー。 で、どんな感じで書いてたかと

//ボタンを押したときの処理
- (IBAction)btnact:(id)sender {
     //seguのIDを設定 (送り先のViewに値を渡すため・・・)
    [self performSegueWithIdentifier:@"ponSegue" sender:self];
}

//seguの処理
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // 遷移先を取得
    if ([[segue identifier] isEqualToString:@"ponSegue"]) {
    }    
}

こういう感じです。違和感なかったです(汗)もちろん、storyboardの方も設定してますよ。 解決方法はというと、

//ボタンを押したときの処理
- (IBAction)btnact:(id)sender {

// ここいらない
}

//seguの処理
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // 遷移先を取得
    if ([[segue identifier] isEqualToString:@"ponSegue"]) {
    }    
}

以上でーす。 おそらくボタンからの画面遷移をstoryboardで設定してたからでしょうね(伝わってる??)

2012年11月5日月曜日


とりあえず簡単なのでデータをNSUserdDefaultsで保存する。

参考URLは下記
NSUserDefaultsはどこまで保存できるかチェック(1)
http://iphone-dev.g.hatena.ne.jp/tokorom/20090520/1242789479

画面遷移するときに保存させればいいかなと
//seguの処理 
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // 遷移先を取得     if ([[segue identifier] isEqualToString:@"ponSegue"]) {      
        TableViewController *tableViewController = segue.destinationViewController;
        tableViewController.kazu = hozontfd.text//テキストフィールドに書かれた値をkazu       // tableViewController.myMuArray = array;     // NSMutableArrayの生成         NSMutableArray* myMuArray = [NSMutableArray array];         // 保存されているデータがあるかないか判断
        if ([[[NSUserDefaults standardUserDefaults] arrayForKey:@"ARRAY"] count] == 0) {             // あれば呼び込む            NSArray *array = [[NSUserDefaults standardUserDefaults] arrayForKey:@"ARRAY"];            // NSMutableArrayに格納            myMuArray = [[NSMutableArray alloc] initWithArray:array];   NSLog(@"myMuArray is %@",[myMuArray description]);
        }
   
        // 新しい値を配列に追加        [myMuArray addObject:hozontfd.text] // 値を保存        [[NSUserDefaults standardUserDefaults] setObject:myMuArray forKey:@"ARRAY"];         [[NSUserDefaults standardUserDefaults] synchronize];   
    }
  
}


注意しなければいけないところは、
NSUserDefaultsではNSMutableArrayを取り出せないこと。そもそもこんな感じで活用することを想定していないからかなー。
取り出そうとするとこんなかんじのエラーが、、、
mutating method sent to immutable object

だからNSArrayで呼び込んで、NSMutableArrayに格納し直すという手間がかかる。